export {};

// 类 | 语法糖
class Person {
	// 实例属性
	name: string
	age: number
	sex: string
	// 构造器
	constructor(name: string, age: number, sex: string) {
		console.log('构造器执行了！');

		// 初始化数据
		this.name = name
		this.age = age
		this.sex = sex
	}
	// 原型方法: 所有的实例所共享
	sayName() {
		console.log(`我是${this.name}, 今天${this.age}岁了， 性别${this.sex}`)
	}

	// 静态属性和静态方法 | 对象特性： 键值对 | 和实例属性和原型方法没有关系
	static count = 1
	static sayCount() {
		console.log("静态", this.count)
	}
	static addCount() {
		this.count++
	}
}

console.log(Person.count)
Person.addCount()
Person.sayCount()
Person.addCount()
Person.sayCount()
Person.addCount()
Person.sayCount()

const p = new Person('张三', 18, '男')
const p1 = new Person('小芳', 20, '女')

p.sayName()
p1.sayName()

console.log(p1, p);


// js中一切皆对象

// 数组是对象？  是1  不是2  答案： 是
// 函数时对象？  是1  不是2  答案： 是
// 类是对象？    是1  不是2  答案： 是

// 那么我们的类 是不是应该具有对象的特性： 具有键值对结构
